home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / shells / kiss-0.11 / kiss-0 / kiss / src / kiss.h < prev    next >
C/C++ Source or Header  |  1995-04-19  |  8KB  |  274 lines

  1. /* includes */
  2. #include <ctype.h> 
  3. #include <errno.h>
  4. #include <fcntl.h> 
  5. #include <glob.h>
  6. #include <grp.h> 
  7. #include <malloc.h>
  8. #include <pwd.h>
  9. #include <regex.h> 
  10. #include <signal.h> 
  11. #include <stdarg.h> 
  12. #include <stdio.h>
  13. #include <stdlib.h> 
  14. #include <string.h>
  15. #include <time.h> 
  16. #include <unistd.h>
  17. #include <utime.h>
  18. #include <sys/mount.h> 
  19. #include <sys/stat.h> 
  20. #include <sys/types.h>
  21. #include <sys/wait.h>
  22.  
  23. #ifdef USE_READLINE
  24. #   include <readline/readline.h>
  25. #   include <readline/history.h>
  26. #endif
  27.  
  28. #ifdef USE_GETLINE
  29. #   include <getline.h>
  30. #endif
  31.  
  32. /* types and such */
  33. typedef struct
  34. {
  35.     char **str;
  36.     int nstr;
  37. } Stringstack;
  38.  
  39. /* flags for kiss program */
  40. typedef struct
  41. {
  42.     int debug        : 1;
  43.     int ctrlc        : 1;
  44.     int version        : 1;
  45.     int supressstat : 1;
  46.     int noenviron   : 1;
  47.     int controlkids : 1;
  48. } Flags;
  49.  
  50. /* flags for cp program */
  51. typedef struct
  52. {
  53.     int verbose        : 1;
  54.     int recursive   : 1;
  55.     int preserve    : 1;
  56.     int noderef        : 1;
  57.     int interactive : 1;
  58. } CpFlags;
  59.  
  60. /* flags for echo program */
  61. typedef struct
  62. {
  63.     int nonewline   : 1;
  64.     int escape        : 1;
  65. } EchoFlags;
  66.  
  67. /* flags for mv program */
  68. typedef struct
  69. {
  70.     int interactive : 1;
  71.     int verbose        : 1;
  72.     int protect        : 1;
  73. } MvFlags;
  74.  
  75. /* flags for rm program */
  76. typedef struct
  77. {
  78.     int verbose        : 1;
  79.     int interactive : 1;
  80.     int recursive   : 1;
  81.     int forced        : 1;
  82. } RmFlags;
  83.  
  84. /* flags for grep program */
  85. typedef struct
  86. {
  87.     int ignorecase  : 1;
  88.     int reverse        : 1;
  89. } GrepFlags;
  90.  
  91. /* flags for ls program */
  92. typedef struct
  93. {
  94.     int longoutput  : 1;
  95.     int oneperline  : 1;
  96.     int column        : 1;
  97.     int listtype    : 1;
  98.     int showall        : 1;
  99. } LsFlags;
  100.  
  101. typedef enum
  102. {
  103.     none,
  104.     writeto,
  105.     appendto,
  106.     readfrom,
  107. } Redirect;
  108.  
  109. typedef struct
  110. {
  111.     char
  112.     *cmdname;
  113.     int
  114.     (*cmd)(Stringstack s);
  115.     int
  116.     firstlevel;
  117. } Cmdtable;
  118.  
  119. /* line buffer length */
  120. #define LINELEN 100
  121.  
  122. /* max file name len, including directory */
  123. #define FILENAMELEN 2028
  124.  
  125. /* buffer when copying files etc. */
  126. #define BUFSIZE (10*1024)
  127.  
  128. /* indices for pipes */
  129. #define P_SUCK 0
  130. #define P_BLOW 1
  131.  
  132. /* alternate stdin file, when stdin is redirected */
  133. #define DEVTTY    "/dev/tty"
  134.  
  135. /* # of history commands that are remembered */
  136. #define MAXHIST 100
  137.  
  138. /* creation flags for directories and such */
  139. #define CREATEFLAGS (S_IRWXU | S_IRGRP | S_IXGRP | S_IROTH | S_IXOTH)
  140.  
  141. /* # of bytes that "cp" should consider as a 'hole', reported with -v */
  142. #define HOLESIZE 1024
  143.  
  144. /* system-wide startup file */
  145. #define SYSTEMRC    "/etc/kiss.rc"
  146. /* user-owned startup file, relative to $HOME */
  147. #define USERRC        ".kissrc"
  148.  
  149. /* variables */
  150. extern Stringstack *alias;            /* table of aliases */
  151. extern int nalias;                /* # entries in table */
  152. extern char bufferedinput [];            /* buffered stuff to run */
  153. extern Cmdtable cmdtable [];            /* table of internal cmds */
  154. extern Flags flags;                /* overall kiss flags */
  155. extern Stringstack *hislist;            /* table of history */
  156. extern int nhislist;                /* # entries in history */
  157. extern char homedir [];                /* user homedir */
  158. extern int inputparsed;                /* parser done anything? */
  159. extern int lastchildpid;            /* $!: last child's pid */
  160. extern int lastfile;                /* last parsed script */
  161. extern int laststatus;                /* $?: last child's exitstat */
  162. extern int orgargc;                /* original argc to main() */
  163. extern char **orgargv;                /* and argv */
  164. extern char *progname;                /* bare progname ("kiss") */
  165. extern int shlvl;                /* shell level */
  166. extern char username [];            /* username of invoker */
  167. extern char *yytext;                /* lexer buffer */
  168. extern FILE *yyin;                /* lexer input file */
  169.  
  170. /* functions */
  171. extern Stringstack addstring (Stringstack a, Stringstack b);
  172. extern void addstringstack (Stringstack *what, Stringstack addition);
  173. extern void addstringtostack (Stringstack *what, char *extrastring);
  174. extern void addtoenv (char *var, char *setting);
  175. extern void addtohistory (Stringstack cmd);
  176. extern void banner ();
  177. extern void catfile (FILE *inf, char *name, int showname, int printonly);
  178. extern void clearstack (Stringstack *what);
  179. extern Stringstack copystringstack (Stringstack src, int first, int last);
  180. extern void command (int argc);
  181. extern int copydirtodir (char *srcdir, char *destdir, CpFlags fl,
  182.              int makethedir);
  183. extern int copyfiletodir (char *file, char *dir, CpFlags fl);
  184. extern int copyfiletofile (char *src, char *dest, CpFlags fl);
  185. extern void debug (char *msg, ...);
  186. extern int doalias (Stringstack s);
  187. extern int docat (Stringstack s);
  188. extern int docd (Stringstack s);
  189. extern int dochgrp (Stringstack s);
  190. extern int dochmod (Stringstack s);
  191. extern int dochown (Stringstack s);
  192. extern int docp (Stringstack s);
  193. extern int doecho (Stringstack s);
  194. extern int doexec (Stringstack s);
  195. extern int dogrep (Stringstack s);
  196. extern int dohelp (Stringstack s);
  197. extern int dohistory (Stringstack s);
  198. extern int dokill (Stringstack s);
  199. extern int dokiss (int argc, char **argv);
  200. extern int doln (Stringstack s);
  201. extern int dols (Stringstack s);
  202. extern int domkdir (Stringstack s);
  203. extern int domknod (Stringstack s);
  204. extern int domore (Stringstack s);
  205. extern int domount (Stringstack s);
  206. extern int domv (Stringstack s);
  207. extern int doprintenv (Stringstack s);
  208. extern int dopwd (Stringstack s);
  209. extern int doquit (Stringstack s);
  210. extern int doread (Stringstack s);
  211. extern int dorecall (Stringstack s);
  212. extern int dorm (Stringstack s);
  213. extern int dormdir (Stringstack s);
  214. extern int dotouch (Stringstack s);
  215. extern int dosetenv (Stringstack s);
  216. extern int dosleep (Stringstack s);
  217. extern int dosource (Stringstack s);
  218. extern int doumount (Stringstack s);
  219. extern int dounsetenv (Stringstack s);
  220. extern int dover (Stringstack s);
  221. extern int dowc (Stringstack s);
  222. extern int dowhere (Stringstack s);
  223. extern void dumpstack (char *msg, Stringstack what);
  224. extern void error (char *msg, ...);
  225. extern Stringstack expandalias (Stringstack s);
  226. extern Stringstack expandbackquotes (Stringstack s);
  227. extern void expandtilde (Stringstack s);
  228. extern int expandvars (char *name, char *destbuf);
  229. extern int file2file (FILE *inf, FILE *outf);
  230. extern void getbasename (char *file, char *basename);
  231. extern void getprogname (char *av0);
  232. extern char *getprompt ();
  233. extern int getinput (FILE *stdinfile);
  234. extern int isalias (char *cmd);
  235. extern int isinternal (char *cmd);
  236. extern int islink (char *src, char *whereto);
  237. extern void launch (Stringstack child, int inf, int outf);
  238. extern int listdir (char *dir, LsFlags fl);
  239. extern int listfile (char *file, LsFlags fl);
  240. extern void listoutput (char *buf);
  241. extern void listoutputflush ();
  242. extern int morefile (FILE *f, char *name, int showname, FILE *mystdin);
  243. extern int movefiletodir (char *file, char *dir, MvFlags fl);
  244. extern int movefiletofile (char *src, char *dest, MvFlags fl);
  245. extern void onechild (Stringstack what, int stdin_desc, int stdout_desc,
  246.               int allowfrom, int allowto);
  247. extern int recursiveremove (char *dir, RmFlags fl);              
  248. extern Redirect redirected (Stringstack *what, char *fname);
  249. extern Stringstack reexpand (Stringstack cmd);
  250. extern int removefile (char *name, RmFlags fl);
  251. extern void runchild (Stringstack what, int background);
  252. extern void runcmd (Stringstack what);
  253. extern int runinternal (Stringstack what);
  254. extern Stringstack setexpandedstring (char *newst);
  255. extern void setshlvl ();
  256. extern Stringstack setstring (char *newst);
  257. extern Stringstack setquotedstring (char *newst, int quote);
  258. extern Stringstack setvariable (char *what);
  259. extern void sighandler (int sig);
  260. extern void sourcefile (char *name);
  261. extern int splitcmd (Stringstack series, Stringstack *dest, int from);
  262. extern void startupfiles ();
  263. extern void waitforchild (char *childname, int childpid, int background);
  264. extern int warning (char *msg, ...);
  265. extern void *xmalloc (int sz);
  266. extern void *xrealloc (void *mem, int newsz);
  267. extern char *xstrdup (char *s);
  268. extern int yyerror (char *msg);
  269. extern int yylex ();
  270. extern int yyparse ();
  271. extern int yypopfile ();
  272. extern void yypushfile (FILE *inf);
  273.  
  274.